//app.js

var _req  = require('/utils/httpUtil.js');; //
var _map = require('/utils/map.js');
//
App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

	  wx.getSetting({
		  success: res => {
			  console.log(res);
			  if (res.authSetting['scope.userLocation']) {
				  _map.getLocation(function (res) {
					  console.log(res);
					  wx.setStorageSync('location', { "lat": res.latitude, 'lng': res.longitude });
					  wx.setStorage({
						  key: 'location',
						  data: { "lat": res.latitude, 'lng': res.longitude },
						  success: function (res) { },
						  fail: function (res) { },
						  complete: function (res) { },
					  })
					  _map.reverseGeocoder(res.latitude, res.longitude, function (res) {
						  console.log(res);
					  });
				  });
			  }
		  }
	  })
	 
	 
			 
    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
		  var code = res.code;  //此处获得的code, 和下方getuserinfo 的iv 和data 一同传完后台解析加密数据,并返回保存在服务器的数据信息
		  // 获取用户信息
		  wx.getSetting({
			  success: res => {
				  if (res.authSetting['scope.userInfo']) {
					  // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
					  wx.getUserInfo({
						  success: res => {
							  console.log(res);
							  // 可以将 res 发送给后台解码出 unionId -->此步骤已省略
							   this.globalData.userInfo = res.userInfo
							  wx.request({
								  url: _req.path + 'xwx/getWxUserInfo' ,
								  data: { code: code, iv: res.iv, encryptedData: res.encryptedData},
								  method: 'post',
								  header: {
									  'Content-Type': 'application/x-www-form-urlencoded'
								  },
								  success: function (res) {
									  console.log(res)
									  //此处返回会带有登陆令牌, 封装了请求方法的话, 可以直接在每次请求返回的时候判断一下是否有令牌, 有就保存起来. 部分接口请求会需要当前令牌信息放在 header 中请求 ,或者每次请求都带过去这个wxToken , 我后台来需要的话就直接取出来了
									  if (res.header['wxToken']) {
										  wx.setStorage({
											  key: 'wxToken',
											  data: res.header['wxToken']
										  })
									  }
									  //取出来返回的数据的id放在缓存中,标识是当前用户的id
									  var dat = res.data;
									  if(dat.resultCode===1000){
										  wx.setStorage({
											  key: 'uid',
											  data: dat.returnObject.id
										  })
										  wx.setStorage({
											  key: 'user',
											  data: dat.returnObject
										  });
									  }
								  },
								  fail: function () {
									  
								  }
							  })
							  // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
							  // 所以此处加入 callback 以防止这种情况
							  if (this.userInfoReadyCallback) {
								  this.userInfoReadyCallback(res)
							  }
						  }
					  })
				  }
			  }
		  })
      }
    })
  },
  globalData: {
    userInfo: null
  }
})